package com.lu.pojo.thread.status;

/**
 * @author luzhenfang
 * @date 2020 05 23
 * @description 线程的 终止
 * 线程状态：
 * - 创建状态
 * - 就绪状态
 * - 阻塞状态
 * - 运行状态
 * - 死亡状态
 * setPriority 更改线程优先级
 * sleep 线程休眠
 * join 等待线程终止
 * yield 暂停当前线程
 * interrupt 中断线程
 * isAlive 是否活动
 * 停止线程： 不推荐 暴力停止
 * 应当设置标志位，让线程自己停止(安全)
 *
 */

class WorkThread implements Runnable {
    private boolean isAlive;

    @Override
    public void run() {
        isAlive = true;
        int i = 0;
        while (isAlive) {
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("我在写代码.." + i++);
        }
    }

    public void stop() {
        this.isAlive = false;
    }
}


public class ThreadStop {
    public static void main(String[] args) throws InterruptedException {
        WorkThread thread = new WorkThread();
        // 创建线程
        Thread thread1 = new Thread(thread);
        // 调整优先级 最高
        thread1.setPriority(Thread.MAX_PRIORITY);
        // 线程启动
        thread1.start();
        for (int i = 0; i < 501; i++) {
            Thread.sleep(10);
            if (i % 15 == 0) {
                // 线程休眠
                Thread.sleep(10);
            }
            if (i == 300) {
                // 线程终止
                thread.stop();
                System.out.println("线程已终止");
            }
        }
    }
}
